﻿using QMERP.Domain.Dtos;

namespace QMERP.Application.Services
{
    public interface ILensService
    {
        /// <summary>
        /// 获取镜种列表基础数据
        /// </summary>
        /// <returns></returns>
        Task<List<LensResponse>> GetBasicLenses();
        /// <summary>
        /// 获取此仓库可添加到库存的所有的镜种
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<LensResponse>> GetCanAddStockLenses(CanAddStockLensRequest request);
        /// <summary>
        /// 获取此供应商和仓库库存的所有的镜种
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<LensResponse>> GetStockLenses(GetStockLensesRequest request);
        /// <summary>
        /// 获取此仓库库存的所有的镜种
        /// </summary>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        Task<List<LensResponse>> GetStockLenses(long warehouseId);
        /// <summary>
        /// 销售镜种窗体
        /// </summary>
        /// <returns></returns>
        Task<PageResponse<LensResponse>> Query(PageRequest<LensRequest> request);
        /// <summary>
        /// 获取id的销售镜种详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<LensResponse> Detail(long id);
        /// <summary>
        /// 销售镜种保存
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task Save(LensSaveRequest request);
        /// <summary>
        /// 销售镜种删除(真删除)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        /// <exception cref="ApiException"></exception>
        Task Remove(LensRemoveRequest request);
    }
}
